package com.jeesite.modules.dataview.specialWork.entity;

import javax.validation.constraints.Size;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;

import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;
import com.jeesite.common.utils.excel.annotation.ExcelField;
import com.jeesite.common.utils.excel.annotation.ExcelFields;

/**
 * 专项工作-事项清单Entity
 * @author dbl
 * @version 2022-09-13
 */
@Table(name="dc_sup_special_work", alias="a", label="专项工作-事项清单信息", columns={
		@Column(name="id", attrName="id", label="id", isPK=true),
		@Column(name="task_num", attrName="taskNum", label="序号", isUpdateForce=true),
		@Column(name="task_type", attrName="taskType", label="事项类别", comment="事项类别（1提升重点工程建设效能、2提升营商环境优化力度、3提升产业项目推进速度、4提升三大攻坚战质效、5提升社会事业发展水平）"),
		@Column(name="task_content", attrName="taskContent", label="任务描述"),
		@Column(name="leader_org_code", attrName="leaderOrgCode", label="责任单位编码"),
		@Column(name="leader_org_name", attrName="leaderOrgName", label="责任单位名称", queryType=QueryType.LIKE),
		@Column(name="dispatcher_name", attrName="dispatcherName", label="调度人", queryType=QueryType.LIKE),
		@Column(name="feedback_content", attrName="feedbackContent", label="目前进展"),
		@Column(name="task_start_time", attrName="taskStartTime", label="任务开始时间", isUpdateForce=true),
		@Column(name="task_end_time", attrName="taskEndTime", label="任务结束时间", isUpdateForce=true),
		@Column(name="latest_require_time", attrName="latestRequireTime", label="最近一次要求反馈时间点", isUpdateForce=true),
		@Column(name="latest_feedback_time", attrName="latestFeedbackTime", label="最近一次反馈时间", isUpdateForce=true),
		@Column(name="feedback_advice", attrName="feedbackAdvice", label="存在问题"),
		@Column(name="contact_name", attrName="contactName", label="联系人", queryType=QueryType.LIKE),
		@Column(name="contact_phone", attrName="contactPhone", label="联系人电话"),
		@Column(name="complete_rate", attrName="completeRate", label="完成率", isUpdateForce=true),
		@Column(name="remarks", attrName="remarks", label="任务备注", queryType=QueryType.LIKE),
		@Column(name="task_progress", attrName="taskProgress", label="推进状态", comment="推进状态（1序时推进、2已完成、3滞后时序、4连续滞后）"),
		@Column(name="import_time", attrName="importTime", label="导入时间", isUpdateForce=true),
	}, orderBy="a.id DESC"
)
public class DcSupSpecialWork extends DataEntity<DcSupSpecialWork> {

	@ExcelFields({
			@ExcelField(title="序号", attrName="taskNum", align= ExcelField.Align.LEFT, sort=10),
			@ExcelField(title="事项类别", attrName="taskType", align= ExcelField.Align.LEFT, sort=20),
			@ExcelField(title="任务描述", attrName="taskContent", align = ExcelField.Align.LEFT, sort=30),
			@ExcelField(title="责任单位名称", attrName="leaderOrgName", align= ExcelField.Align.LEFT, sort=50),
			@ExcelField(title="调度人", attrName="dispatcherName", align= ExcelField.Align.LEFT, sort=60),
			@ExcelField(title="目前进展", attrName="feedbackContent", align= ExcelField.Align.LEFT, sort=70),
			@ExcelField(title="任务开始时间", attrName="taskStartTime", align= ExcelField.Align.LEFT, sort=80),
			@ExcelField(title="任务结束时间", attrName="taskEndTime", align= ExcelField.Align.LEFT, sort=90),
			@ExcelField(title="最近一次要求反馈时间点", attrName="latestRequireTime", align= ExcelField.Align.LEFT, sort=100),
			@ExcelField(title="最近一次反馈时间", attrName="latestFeedbackTime", align= ExcelField.Align.LEFT, sort=110),
			@ExcelField(title="存在问题", attrName="feedbackAdvice", align= ExcelField.Align.LEFT, sort=120),
			@ExcelField(title="联系人", attrName="contactName", align= ExcelField.Align.LEFT, sort=130),
			@ExcelField(title="联系人电话", attrName="contactPhone", align= ExcelField.Align.LEFT, sort=140),
			@ExcelField(title="完成率", attrName="completeRate", align= ExcelField.Align.LEFT, sort=150),
			@ExcelField(title="备注", attrName="remarks", align= ExcelField.Align.LEFT, sort=160),
			@ExcelField(title="推进状态", attrName="taskProgress", align= ExcelField.Align.LEFT, sort=170),

	})
	
	private static final long serialVersionUID = 1L;
	 /**
	 * 序号
	 */
	private Long taskNum;
	 /**
	 * 事项类别（1提升重点工程建设效能、2提升营商环境优化力度、3提升产业项目推进速度、4提升三大攻坚战质效、5提升社会事业发展水平）
	 */
	private String taskType;
	 /**
	 * 任务描述
	 */
	private String taskContent;
	 /**
	 * 责任单位编码
	 */
	private String leaderOrgCode;
	 /**
	 * 责任单位名称
	 */
	private String leaderOrgName;
	 /**
	 * 调度人
	 */
	private String dispatcherName;
	 /**
	 * 目前进展
	 */
	private String feedbackContent;
	 /**
	 * 任务开始时间
	 */
	private Date taskStartTime;
	 /**
	 * 任务结束时间
	 */
	private Date taskEndTime;
	 /**
	 * 最近一次要求反馈时间点
	 */
	private Date latestRequireTime;
	 /**
	 * 最近一次反馈时间
	 */
	private Date latestFeedbackTime;
	 /**
	 * 存在问题
	 */
	private String feedbackAdvice;
	 /**
	 * 联系人
	 */
	private String contactName;
	 /**
	 * 联系人电话
	 */
	private String contactPhone;
	 /**
	 * 完成率
	 */
	private Long completeRate;
	 /**
	 * 推进状态（1序时推进、2已完成、3滞后时序、4连续滞后）
	 */
	private String taskProgress;
	 /**
	 * 导入时间
	 */
	private Date importTime;
	private String importTimeStr;
	private String createTaskDate;

	public String getCreateTaskDate() {
		return createTaskDate;
	}

	public void setCreateTaskDate(String createTaskDate) {
		this.createTaskDate = createTaskDate;
	}

	public DcSupSpecialWork() {
		this(null);
	}

	public DcSupSpecialWork(String id){
		super(id);
	}
	
	public Long getTaskNum() {
		return taskNum;
	}

	public void setTaskNum(Long taskNum) {
		this.taskNum = taskNum;
	}
	
	@Size(min=0, max=64, message="事项类别长度不能超过 64 个字符")
	public String getTaskType() {
		return taskType;
	}

	public void setTaskType(String taskType) {
		this.taskType = taskType;
	}
	
	public String getTaskContent() {
		return taskContent;
	}

	public void setTaskContent(String taskContent) {
		this.taskContent = taskContent;
	}
	
	@Size(min=0, max=100, message="责任单位编码长度不能超过 100 个字符")
	public String getLeaderOrgCode() {
		return leaderOrgCode;
	}

	public void setLeaderOrgCode(String leaderOrgCode) {
		this.leaderOrgCode = leaderOrgCode;
	}
	
	@Size(min=0, max=100, message="责任单位名称长度不能超过 100 个字符")
	public String getLeaderOrgName() {
		return leaderOrgName;
	}

	public void setLeaderOrgName(String leaderOrgName) {
		this.leaderOrgName = leaderOrgName;
	}
	
	@Size(min=0, max=64, message="调度人长度不能超过 64 个字符")
	public String getDispatcherName() {
		return dispatcherName;
	}

	public void setDispatcherName(String dispatcherName) {
		this.dispatcherName = dispatcherName;
	}
	
	public String getFeedbackContent() {
		return feedbackContent;
	}

	public void setFeedbackContent(String feedbackContent) {
		this.feedbackContent = feedbackContent;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd")
	public Date getTaskStartTime() {
		return taskStartTime;
	}

	public void setTaskStartTime(Date taskStartTime) {
		this.taskStartTime = taskStartTime;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd")
	public Date getTaskEndTime() {
		return taskEndTime;
	}

	public void setTaskEndTime(Date taskEndTime) {
		this.taskEndTime = taskEndTime;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd")
	public Date getLatestRequireTime() {
		return latestRequireTime;
	}

	public void setLatestRequireTime(Date latestRequireTime) {
		this.latestRequireTime = latestRequireTime;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd")
	public Date getLatestFeedbackTime() {
		return latestFeedbackTime;
	}

	public void setLatestFeedbackTime(Date latestFeedbackTime) {
		this.latestFeedbackTime = latestFeedbackTime;
	}
	
	public String getFeedbackAdvice() {
		return feedbackAdvice;
	}

	public void setFeedbackAdvice(String feedbackAdvice) {
		this.feedbackAdvice = feedbackAdvice;
	}
	
	@Size(min=0, max=64, message="联系人长度不能超过 64 个字符")
	public String getContactName() {
		return contactName;
	}

	public void setContactName(String contactName) {
		this.contactName = contactName;
	}
	
	@Size(min=0, max=64, message="联系人电话长度不能超过 64 个字符")
	public String getContactPhone() {
		return contactPhone;
	}

	public void setContactPhone(String contactPhone) {
		this.contactPhone = contactPhone;
	}
	
	public Long getCompleteRate() {
		return completeRate;
	}

	public void setCompleteRate(Long completeRate) {
		this.completeRate = completeRate;
	}
	
	@Size(min=0, max=10, message="推进状态长度不能超过 10 个字符")
	public String getTaskProgress() {
		return taskProgress;
	}

	public void setTaskProgress(String taskProgress) {
		this.taskProgress = taskProgress;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd")
	public Date getImportTime() {
		return importTime;
	}

	public void setImportTime(Date importTime) {
		this.importTime = importTime;
	}

	public String getImportTimeStr() {
		return importTimeStr;
	}

	public void setImportTimeStr(String importTimeStr) {
		this.importTimeStr = importTimeStr;
	}
}